home *** CD-ROM | disk | FTP | other *** search
- program DowTst; {Turbo Pascal 5.0, 5.5, 6.0}
-
- { Ref: Determining Day Of Week, PC Magazine, April 28, 1992, p428 }
-
- {-------}
- { Dow returns day of week as an integer (0 = Sunday, 1 = Monday, ..
- 6 = Saturday). The inputs are not checked for validity.
- Example: Dow(1,31,1992) returns 5.}
-
- function Dow(Month,Day,Year : integer) : integer;
-
- const
- Calendar : array[0..11] of integer = (0,1,-1,0,0,1,1,2,3,3,4,4);
- begin
- Dow := (((Year-1)*longint(365)) {num of days of normal years - 1}
- + ((Year-1) div 4) {num of possible leap days}
- - (((Year-1) div 100) {num of non-century leap days}
- - ((Year-1) div 400))
- {num of days in month passed}
- + (Calendar[Month-1] + ((Month-1)*30))
- + integer((((Year mod 4 = 0) and (Year mod 100 <> 0))
- or (Year mod 400 = 0)) and (Month > 2))
- + Day) mod 7
- end; {Dow}
- {-------}
- { DowStr returns day of week as a string (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
- Example: DowStr(1,31,1992) returns 'Fri'). }
-
- function DowStr(Month,Day,Year : integer) : string;
-
- const
- DayS : array[0..6] of string[3]=('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
- begin
- DowStr := DayS[Dow(Month,Day,Year)]
- end; {DowStr}
- {-------}
-
- var
- Month,Day,Year,Code : integer;
-
- begin
- if ParamCount <> 3 then
- begin
- Write('Enter date (MM DD YYYY): ');
- Read(Month,Day,Year);
- end
- else
- begin
- Val(ParamStr(1),Month,Code);
- Val(ParamStr(2),Day,Code);
- Val(Paramstr(3),Year,Code)
- end;
- Writeln('Day of week: ',DowStr(Month,Day,Year));
- end.